//
// @Auther: by wujehy 
// @Email:wujehy@qq.com
// @Data:2020/9/11
// @Time:3:59 下午
//
//

#ifndef GEEJOAN_BASEMOD_H
#define GEEJOAN_BASEMOD_H

#include <string>
#include "BaseComponent.h"
#include "NetworkProtocol.h"

namespace GeeJoan
{
    /**
     * @brief 模块基类 ,用于路由
     */
    class BaseMod : public BaseComponent
    {
    public:
        /**
         * @brief 标记该模块类型是的接口
         * @return
         */
        virtual ModTypeEnum mod_type() = 0;

        /**
         * @brief 处理消息
         * @param hander 客户端向服务端请求的数据包
         * @param code 填入需要相应的状态码，　不填默认则为　Fail
         * @param resposeBody　需要返回给客户端的消息体
         */
        virtual void procMessage(const HanderDataType *hander, StatusCodeTypeEnum &code, std::string &resposeBody) = 0;

        /**
         * @brief　初始化完成统一分配全局上下文, 默认直接传递
         * @param context
         */
        virtual void init_complete(Global_Context *context);

    };
}
#endif //GEEJOAN_BASEMOD_H
